package com.platform.service;

import com.platform.entity.CashOutEntity;
import com.platform.entity.MerchantInfomationEntity;
import com.platform.entity.UserAssetEntity;
import com.platform.entity.excel.CashOutExcel;

import java.util.List;
import java.util.Map;

/**
 * 提现申请表Service接口
 *
 * @author lipengjun
 * @email 939961241@qq.com
 * @date 2019-02-17 10:44:13
 */
public interface CashOutService {

    /**
     * 根据主键查询实体
     *
     * @param id 主键
     * @return 实体
     */
    CashOutEntity queryObject(Long id);

    /**
     * 分页查询
     *
     * @param map 参数
     * @return list
     */
    List<CashOutEntity> queryList(Map<String, Object> map);

    /**
     * 分页统计总数
     *
     * @param map 参数
     * @return 总数
     */
    int queryTotal(Map<String, Object> map);

    /**
     * 保存实体
     *
     * @param tCashOut 实体
     * @return 保存条数
     */
    int save(CashOutEntity tCashOut);

    /**
     * 根据主键更新实体
     *
     * @param tCashOut 实体
     * @return 更新条数
     */
    int update(CashOutEntity tCashOut);

    int finish(CashOutEntity tCashOut);

    /**
     * 根据主键删除
     *
     * @param id
     * @return 删除条数
     */
    int delete(Long id);

    /**
     * 根据主键批量删除
     *
     * @param ids
     * @return 删除条数
     */
    int deleteBatch(Long[] ids);

    List<CashOutExcel> queryListExcel(String name, String phone, String cardNo, Integer status, Integer index, Integer size);

    /**
     * 完成提现
     * @return
     */
    boolean success(Integer id, Integer status, Integer version, MerchantInfomationEntity merchantInfomationEntity) throws Exception;

    /**
     *修改提现状态
     * @return
     */
    Integer updateCashOutStatus(Integer status,Integer id,Integer version);

    /**
     * 审核失败
     * @param cashOutEntity
     * @param userAssetEntity
     * @return
     * @throws Exception
     */
    public boolean cashOutFail(CashOutEntity cashOutEntity,MerchantInfomationEntity merchantInfomationEntity) throws Exception;

    /**
     * 根据条件查询完成提现信息
     * @param uid
     * @return
     */
    Map<String,Object> queryCashOutMap(Integer uid);
}
